From 0857c2fc47cd925862016b0fd23603da5668551c Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Thu, 23 Jun 2005 08:48:36 +0000 Subject: [PATCH] bitkeeper revision 1.1726.2.4 (42ba7764ufxk9A-swAcfL3FabbYQ2w) Fix alloc_{l2,l3}_table to correctly compute longword-sized virtual address from int-sized pagetable index. Based on discussion from Scott Parish and Jan Beulich. Signed-off-by: Keir Fraser --- xen/arch/x86/mm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 0487da6a44..d0de3d0d0e 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -753,7 +753,7 @@ static inline int l1_backptr( #else # define create_pae_xen_mappings(pl3e) (1) # define l1_backptr(bp,l2o,l2t) \ - ({ *(bp) = (l2o) << L2_PAGETABLE_SHIFT; 1; }) + ({ *(bp) = (unsigned long)(l2o) << L2_PAGETABLE_SHIFT; 1; }) #endif static int alloc_l2_table(struct pfn_info *page, unsigned int type) @@ -821,7 +821,7 @@ static int alloc_l3_table(struct pfn_info *page) pl3e = map_domain_page(pfn); for ( i = 0; i < L3_PAGETABLE_ENTRIES; i++ ) { - vaddr = i << L3_PAGETABLE_SHIFT; + vaddr = (unsigned long)i << L3_PAGETABLE_SHIFT; if ( is_guest_l3_slot(i) && unlikely(!get_page_from_l3e(pl3e[i], pfn, d, vaddr)) ) goto fail; -- 2.30.2